ExportSpatialAveragePlants Subroutine

public subroutine ExportSpatialAveragePlants(init)

Export spatial average of plants variables

Arguments

Type IntentOptional Attributes Name
logical, intent(in), optional :: init

Variables

Type Visibility Attributes Name Initial
integer(kind=short), public :: count
integer(kind=short), public :: i
integer(kind=short), public :: k

Source Code

SUBROUTINE ExportSpatialAveragePlants   & 
!
 (init)  

IMPLICIT NONE

!arguments with intent in:
LOGICAL, OPTIONAL, INTENT(IN) :: init

!local declarations
INTEGER (KIND = short) :: i, k, count

!-------------------------------end of declaration-----------------------------
IF ( countplants == 0 ) THEN
    RETURN
END IF

IF (PRESENT (init) .AND. init ) THEN !open file and write header
  DO i = 1, nextents
     extents (i) % unitplants = GetUnit ()
     OPEN (UNIT = extents (i) % unitplants, FILE = extents (i) % fileplants)
     WRITE(UNIT = extents (i) % unitplants, FMT ='(a)') &
              'spatial average values of plants variables'
     WRITE(UNIT = extents (i) % unitplants, FMT ='(a,a)') &
              'extent id: ', TRIM(extents (i) % id)
     WRITE(UNIT = extents (i) % unitplants, FMT ='(a,a)') &
              'extent name: ', TRIM(extents (i) % name)
     WRITE(UNIT = extents (i) % unitplants, FMT ='(a,f15.5)') &
               'extent area (km2): ', extents (i) % area / 1000. ** 2.

     WRITE(UNIT = extents (i) % unitplants, FMT ='(a,i5)') &
               'number of variables: ', countplants
    
     WRITE(UNIT = extents (i) % unitplants, FMT = *) 
     WRITE(UNIT = extents (i) % unitplants, FMT = '(a)')  'data'

     WRITE(UNIT = extents (i) % unitplants, FMT = '(a)', ADVANCE = 'no' )  'DateTime          '

     count = 0
     DO k = 1, SIZE (plantsout)
       IF (plantsout (k) )  THEN
          count = count + 1
          IF (count == countplants) THEN !last header
             WRITE(UNIT = extents (i) % unitplants, FMT = '(a)')  TRIM(plantsheader (k)) 
          ELSE
             WRITE(UNIT = extents (i) % unitplants, FMT = '(a,2x)', ADVANCE = 'no') &
                   TRIM(plantsheader (k))
          END IF
       END IF
     END DO
  END DO

ELSE  !write spatial average values
  timeString = timeSpatialAveragePlants
  DO i = 1, nextents
     WRITE(UNIT = extents (i) % unitplants, FMT ='(a,2x, 15(E12.5,5x))') &
                  timeString, (extents (i) % plants (k), k = 1, countplants)
  END DO
END IF

RETURN
END SUBROUTINE ExportSpatialAveragePlants